package subgroup

import (
	"embed"
	"os"
	"strings"

	"github.com/gofiber/fiber/v2"
	"github.com/gofiber/template/html/v2"
)

// 嵌入webmb目录中的所有文件
//
//go:embed webmb
var WebmbFS embed.FS

// 不再嵌入证书文件

// 初始化嵌入式模板
func InitEmbeddedTemplates() {
	// 从嵌入的文件系统中读取home.html
	homeHTML, err := WebmbFS.ReadFile("webmb/home.html")
	if err != nil {
		panic("无法读取嵌入的home.html模板: " + err.Error())
	}

	// 创建webmb目录（如果不存在）
	os.MkdirAll("webmb", 0755)

	// 将模板内容写入文件
	err = os.WriteFile("webmb/home.html", homeHTML, 0644)
	if err != nil {
		panic("无法写入home.html模板: " + err.Error())
	}
}

// 获取模板引擎
func GetTemplateEngine() *html.Engine {
	engine := html.New("./webmb", ".html")

	// 添加自定义函数
	engine.AddFunc("contains", strings.Contains)

	return engine
}

// 设置路由
func SetupRoutes(app *fiber.App) {
	// 主页路由
	app.Get("/", handleMain)
	app.Post("/", handleMain)

	// 解析KEY页
	app.Get("/dumpkey", handleMain)
	app.Post("/dumpkey", handleMain)

	// 生成key页
	app.Get("/getkey", handleMain)
	app.Post("/getkey", handleMain)

	// RPC接口
	app.Post("/rpc/ping.action", handleRPC)
	app.Post("/rpc/obtainTicket.action", handleRPC)
	app.Post("/rpc/releaseTicket.action", handleRPC)
	app.Post("/rpc/prolongTicket.action", handleRPC)
}
